全部文档

Modbus设备接入实践

本文介绍将基于Modbus RTU协议的设备(以下统称设备)接入边缘节点,及其与边缘管理平台交互的过程。

前提条件

1.已部署边缘节点并连接上边缘管理平台,具体步骤参考边缘节点环境搭建最佳实践,边缘节点宿主机操作系统为linux。

2.准备一个基于Modbus RTU协议的设备,并确保它与边缘节点所在主机能进行正常的串口通信。如果没有Modbus设备,则只能使用边缘节点软件内置的模拟设备。

创建Mobus产品

产品是对具有相同属性的一类终端设备的抽象,它定义了该类设备共同的一组功能属性也叫物模型。下面以创建一个基于Modbus RTU协议的电机产品为例。

1.在边缘设备管理->产品界面,点击右边的添加产品按钮:

modbus_01.png

2.在弹出界面中输入自定义产品名称,选择协议类型为MODBUS,完成后,点击添加按钮。

modbus_02.png

3.添加成功后,回到产品界面。

modbus_03.png

创建Modbus产品物模型

物模型,即产品的功能属性,一个产品可以有多个功能属性。下面定义电机的一个可读可写的属性:转速

1.在该产品右边点击详情,进入产品详情界面。

modbus_04.png

2.在产品详情选项卡界面中,依次点击编辑功能定义按钮->添加自定义功能按钮。

modbus_05.png

modbus_11.png

3.在弹出框输入界面中按下图输入产品功能信息。 modbus_06.png

功能参数说明:

参数 说明
功能名称 方便浏览阅读的名称,建议为汉字。
标识符 方便程序使用的名称,唯一标识同一产品里的该功能,建议用英文。
单位 功能属性值的单位,比如温度单元摄像度,长度的单位米。
数据类型 平台存储与使用的该功能属性的值类型,暂称为平台属性类型:
String,字符串,需要额外指定字符串长度;
Boolean,布尔,值只有true和false,需要添加对应的文字描述;
Integer,32bit有符号整型,需要额外指定最小值和最大值,以及步长;
Long,64bit有符号长整型,需要额外指定最小值和最大值,以及步长;
Float,32bit单精度浮点数,需要额外指定最小值和最大值,以及步长;
Doube,64bit双精度浮点数,需要额外指定最小值和最大值,以及步长;
Date,时间戳类型,实际上是64bit无符号长整型;
Enum,枚举,需要额外指定具体的值,但范围必须在0到127之间。
步长 属性值变化的最小粒度,当属性值变化小于步长时不上报。
操作类型 指定modbus RTU协议里的读写功能码,具体请参数Modbus协议:
0x01 READ COIL STATUS
0x02 READ INPUT STATUS
0x03 READ HOLDING REGISTERS
0x04 READ INPUT REGISTERS
0x05 WRITE SINGLE COIL
0x06 WRITE SINGLE REGISTER
0x0F WRITE MULTIPLE COILS
0x10 WRITE MULTIPLE REGISTERS
寄存器地址 modbus 协议里的读写起始地址,范围是0x0000-0xFFFF。
原始数据类型 modbus设备里指定起始地址上存储的数据的实际类型,如果与平台使用的属性类型不兼容,会最自动做数据转换。原始原始数据类型可以指定为:
String,字符串类型,需要额外指定所占寄存器个数=字符串所占字节数/2,向上取整;
Boolean, 布尔类型,1个字节,1个寄存器;
Int8 , 8bit有符号整型,1个字节,1个寄存器;
Int16 , 16bit有符号整型,2个字节,1个寄存器;
Int32 , 32bit有符号整型,4个字节,2个寄存器;
Int64 , 64bit有符号整型,8个字节,4个寄存器;
UInt8 , 8bit无符号整型,1个字节,1个寄存器;
UInt16, 16bit无符号整型,2个字节,1个寄存器;
UInt32 ,32bit无符号整型,4个字节,2个寄存器;
UInt64 ,64bit无符号整型,8个字节,4个寄存器;
Float ,32bit浮点数,4字节,2个寄存器;
Double,64bit浮点数,8字节,4个寄存器。
注:
1.一个寄存器有2个字节。modbus读写是以寄存器为单位,即至少读写2个字节;
2.整型默认按大端字节序读写。如需小端字节序,须同时指定下面两项参数是否交换为true。
交换寄存器内高低字节 适用于整型。指定为true时,在从寄存器读之后或写入寄存器之前将对字节数据按每个寄存器内两个字节交换位置。比如一个占2个寄存器的32bit整型数据:
交换前 [0x01 0x02 0x03 0x04],
交换后 [0x02 0x01 0x04 0x03]。
交换寄存器顺序 适用于整型。指定为true时,在从寄存器读之后或写入寄存器之前将对字节数据按寄存器顺序进行前后反转。比如一个占2个寄存器的32bit整型数据:
交换前 [0x01 0x02 0x03 0x04],
交换后 [0x03 0x04 0x01 0x02]。
缩放因子 浮点值,默认为1.0。读数据时,即从原始数据类型值转换到平台属性类型值时,乘以该缩放因子;反之写数据时,即从平台属性类型值转换到原始数据类型时,除以该缩放因子。

4.回到产品功能定义列表,点击发布按钮。

modbus_07.png

5.如果还有其它功能属性,以相同步骤添加即可。

创建Modbus设备

这里所说的设备对应一个实际终端设备,是抽象模型。

1.进入边缘设备管理->设备,点击右边的添加设备按钮。

modbus_08.png

2.在弹出框输入界面,所属产品选择刚创建的modbus产品“电机”,自定义输入设备名称,点击添加按钮。

modbus_09.png

3.添加成功后,回到设备列表界面。

modbus_10.png

部署Modbus应用

Modbus应用须为边缘管理平台边缘市场官方提供的镜像应用,内部集成了modbus数据采集驱动,本为边缘节点的可选模块,这里需要将它部署到将要接入modbus设备的边缘节点。

1.在边缘节点管理里找到已部署好的边缘节点,确保显示为在线,记住节点名称,后面部署应用需要用到。

modbus_12.png 2.进入边缘市场,找到与边缘节点宿主机CPU架构一致的Modbus应用,点击部署应用 modbus_13.png

3.在进入部署设置界面,页面较长,如下图指定关联边缘节点为已部署好的边缘节点的产品名称和节点名称。其它输入项可默认,也可根据实际需要修改。

modbus_14.png

确保容器网络指定的是主机网络

modbus_15.png

环境变量:如果没有真实modbus设备,需要使用边缘节点软件内置模拟的modbus设备,还需要如下图添加一个环境变量SIMULATED_MODBUS_DRIVER=1:

modbus_16.png

卷配置:如果是用真实的modbus设备,由于在linux系统上串口文件一般是/dev目录路径之下,需要将主机/dev目录挂载进容器的/modbus目录之下,如下图所示。modbus容器应用会在/modbus目录下寻找串口文件路径。

modbus_22.png

修改好配置后,点击底部创建按钮部署到边缘节点中。

modbus_17.png

如果成功,会显示如下页面:

modbus_18.png

添加子设备通信通道

通信通道,对于modbus RTU而言,就是配置modbus设备对应的边缘节点宿主机上的串口文件路径。

1.回到边缘节点管理列表,找到边缘节点,点击详情按钮进入节点详情页面后,依次点击边缘节点配置->子设备通信通道->Mobus协议,点击新增通道按钮。

modbus_19.png

2.在弹出框输入界面中按下图配置,通道名称自定义,通道协议选Modbus,其它串口通信参数要根据实际的modbus设备来指定。配置完成后,点击分配按钮添加通道信息。

modbus_20.png

注:modbus应用会自动在所填串口路径前加上一层目录 /modbus。

3.添加完成后回到Modbus协议通道列表。

modbus_21.png

关联Modbus设备

即将哪些modbus设备接入到当前边缘节点。

1.如下图切换选项卡:边缘节点配置->子设备管理->Modbus协议,点击关联按钮。

modbus_23.png

2.在弹出框输入界面中先勾选要关联的Modbus设备,再点击添加按钮。

modbus_24.png

3.添加完成后回到Modbus子设备列表。

modbus_25.png

配置Modbus设备通道

给modbus设备配置串口信息。

1.在边缘节点配置->子设备管理->Modbus协议的modbus子设备列表,点击每个设备行右边的通道配置

modbus_26.png

2.在弹出框输入界面上选择之前添加的modbus设备通道,从站号视实际情况而定,如下图。填完后点击分配按钮。

modbus_27.png

参数说明:

参数 说明
选择通道 指定之前添加的modbus设备通道。
从站号 真实modbus设备实际接入时的从站号;
如果是边缘节点软件内置模拟modbus设备,则忽略。
采集间隔 采集设备功能属性数据的时间间隔,单位为秒。

添加云边消息【平台转发】

如果已配置,可跳过。

边缘网关收到设备上传的数据,默认是不上报给边缘云平台的。如果需要上报给边缘云平台,则需要先添加一个对应的消息路由。

1.进入云边消息->路由实例界面,点击右上角添加路由实例按钮。

modbus_28.png

2.在弹出框输入界面中,如下图配置好后,点击完成按钮。

modbus_30.png

3.成功后回到云边消息路由实例列表界面,新增了一条记录。

modbus_31.png

4.回到边缘节点管理-边缘节点详情页面,如下图切换到边缘节点配置->云边消息列表,点击分配路由实例按钮。

modbus_32.png

5.在弹出框输入界面中勾选刚才创建的路由实例,点击分配按钮。

modbus_33.png

6.完成之后回到云边消息列表。

modbus_34.png

部署配置方案

上述所有配置包括子设备、通信通道、云边消息等配置操作完成后,还只是保存在平台侧,需要下发到边缘节点。下发之后,如果一切无误,边缘节点就会采集设备数据并上报到边缘云平台。

1.在边缘节点详情界面,点击右上角的部署配置按钮部署到边缘节点中。

modbus_35.png

查看数据上报

1.依次点击边缘节点配置-子设备管理-Modbus协议,在Modbus设备列表里点击Modbus设备行右边的详情,查看设备数据。

modbus_36.png

2.可以点击每行属性前的箭头按钮展开数据视图。比如点击温度属性。

modbus_37.png

3.此处用的内置模拟设备,温度默认值为0。温度属性数据视图如下:

modbus_38.png

4.可以点击写入按钮,下发写命令:

modbus_39.png

5.之后视图如下:

modbus_40.png

results matching ""

    No results matching ""